From 155901dad8d578fef6e5b2b333a4ea84ad87f646 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Niklas=20Laxstr=C3=B6m?= Date: Mon, 26 Jan 2009 09:41:52 +0000 Subject: [PATCH] * (bug 13040) Gender switch in user preferences --- RELEASE-NOTES | 1 + includes/specials/SpecialPreferences.php | 28 ++++++++++++++++++++++-- languages/messages/MessagesEn.php | 5 +++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 237f33ba1d..9eef071bb9 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -62,6 +62,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * More helpful error message on raw page access if PHP_SELF isn't set * (bug 17145) Specific categories can be excluded from Special:UnusedCategories with __IGNOREUNUSED__ +* (bug 13040) Gender switch in user preferences === Bug fixes in 1.15 === * (bug 16968) Special:Upload no longer throws useless warnings. diff --git a/includes/specials/SpecialPreferences.php b/includes/specials/SpecialPreferences.php index cfe4798154..922be9e1bb 100644 --- a/includes/specials/SpecialPreferences.php +++ b/includes/specials/SpecialPreferences.php @@ -26,7 +26,7 @@ class PreferencesForm { var $mUserLanguage, $mUserVariant; var $mSearch, $mRecent, $mRecentDays, $mTimeZone, $mHourDiff, $mSearchLines, $mSearchChars, $mAction; var $mReset, $mPosted, $mToggles, $mSearchNs, $mRealName, $mImageSize; - var $mUnderline, $mWatchlistEdits; + var $mUnderline, $mWatchlistEdits, $mGender; /** * Constructor @@ -66,6 +66,7 @@ class PreferencesForm { $this->mWatchlistDays = $request->getVal( 'wpWatchlistDays' ); $this->mWatchlistEdits = $request->getVal( 'wpWatchlistEdits' ); $this->mDisableMWSuggest = $request->getCheck( 'wpDisableMWSuggest' ); + $this->mGender = $request->getVal( 'wpGender' ); $this->mSaveprefs = $request->getCheck( 'wpSaveprefs' ) && $this->mPosted && @@ -207,6 +208,15 @@ class PreferencesForm { } } + function validateGender( $val ) { + $valid = array( 'male', 'female', 'unknown' ); + if ( in_array($val, $valid) ) { + return $val; + } else { + return User::getDefaultOption( 'gender' ); + } + } + /** * @access private */ @@ -272,6 +282,7 @@ class PreferencesForm { $wgUser->setOption( 'underline', $this->validateInt($this->mUnderline, 0, 2) ); $wgUser->setOption( 'watchlistdays', $this->validateFloat( $this->mWatchlistDays, 0, 7 ) ); $wgUser->setOption( 'disablesuggest', $this->mDisableMWSuggest ); + $wgUser->setOption( 'gender', $this->validateGender( $this->mGender ) ); # Set search namespace options foreach( $this->mSearchNs as $i => $value ) { @@ -423,6 +434,7 @@ class PreferencesForm { $this->mUnderline = $wgUser->getOption( 'underline' ); $this->mWatchlistDays = $wgUser->getOption( 'watchlistdays' ); $this->mDisableMWSuggest = $wgUser->getBoolOption( 'disablesuggest' ); + $this->mGender = $wgUser->getOption( 'gender' ); $togs = User::getToggles(); foreach ( $togs as $tname ) { @@ -735,7 +747,19 @@ class PreferencesForm { $this->tableRow( ' ', $this->getToggle( 'fancysig' ) ) ); - list( $lsLabel, $lsSelect) = Xml::languageSelector( $this->mUserLanguage ); + $gender = new XMLSelect( 'wpGender', 'wpGender', $this->mGender ); + $gender->addOption( wfMsg( 'gender-unknown' ), 'unknown' ); + $gender->addOption( wfMsg( 'gender-male' ), 'male' ); + $gender->addOption( wfMsg( 'gender-female' ), 'female' ); + + $wgOut->addHTML( + $this->tableRow( + Xml::label( wfMsg( 'yourgender' ), 'wpGender' ), + $gender->getHTML() + ) + ); + + list( $lsLabel, $lsSelect) = Xml::languageSelector( $this->mUserLanguage, false ); $wgOut->addHTML( $this->tableRow( $lsLabel, $lsSelect ) ); diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index c84b77a629..b9c94b9d06 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -286,6 +286,7 @@ $magicWords = array( 'servername' => array( 0, 'SERVERNAME' ), 'scriptpath' => array( 0, 'SCRIPTPATH' ), 'grammar' => array( 0, 'GRAMMAR:' ), + 'gender' => array( 0, 'GENDER:' ), 'notitleconvert' => array( 0, '__NOTITLECONVERT__', '__NOTC__'), 'nocontentconvert' => array( 0, '__NOCONTENTCONVERT__', '__NOCC__'), 'currentweek' => array( 1, 'CURRENTWEEK' ), @@ -908,6 +909,10 @@ Please choose a different name.', Check HTML tags.', 'badsiglength' => 'The signature is too long. It must be under $1 {{PLURAL:$1|character|characters}}.', +'yourgender' => 'Gender:', +'gender-unknown' => 'Unspecified', +'gender-male' => 'Male', +'gender-female' => 'Female', 'email' => 'E-mail', 'prefs-help-realname' => 'Real name is optional. If you choose to provide it, this will be used for giving you attribution for your work.', -- 2.20.1